package com.cy.dda.service.goodsdiligencing;

import com.cy.dda.model.Result;
import com.cy.dda.model.ao.goodsdiligencing.GoodsDiligencingReportAuditAO;
import com.cy.dda.model.ao.goodsdiligencing.VerifyTruthReportSaveAO;
import com.cy.dda.model.enums.goodsdiligencing.GoodsDiligencingAttachmentType;
import com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingReportAttachmentVO;
import com.cy.dda.model.vo.goodsdiligencing.VerifyTruthReportAdminDetailVO;
import com.cy.dda.model.vo.goodsdiligencing.VerifyTruthReportDetailVO;

import java.util.List;
import java.util.Map;

/**
 * @Description 验真报告 接口
 * @Author tanyilin
 * @Date 2019/8/27 17:58
 */
public interface VerifyTruthReportService {

    /**
     * 验真报告详情
     * @param goodsDiligencingId
     * @return com.cy.dda.model.vo.goodsdiligencing.VerifyTruthReportDetailVO
     */
    VerifyTruthReportDetailVO getVerifyTruthReportDetail(Long goodsDiligencingId);

    /**
     * 验证报告图片
     * @param verifyTruthReportId
     * @param type
     * @return java.util.List<com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingReportAttachmentVO>
     */
    List<GoodsDiligencingReportAttachmentVO> getVerifyTruthReportAttachmentList(Long verifyTruthReportId, GoodsDiligencingAttachmentType type);

    /**
     * 保存验真报告图片
     * @param saveAO
     * @param userId
     * @return com.cy.dda.model.Result<java.util.Map<java.lang.String,java.lang.Object>>
     */
    Result<Map<String, Object>> saveVerifyTruthReportAttachment(VerifyTruthReportSaveAO saveAO, Long userId);

    /**
     * 保存验真报告
     * @param saveAO
     * @param userId
     * @return com.cy.dda.model.Result<java.util.Map<java.lang.String,java.lang.Object>>
     */
    Result<Map<String, Object>> saveVerifyTruthReport(VerifyTruthReportSaveAO saveAO, Long userId);

    /**
     * 审核 验真报告
     * @param auditAO
     * @param managerId
     * @return void
     */
    void doAuditVerifyTruthReport(GoodsDiligencingReportAuditAO auditAO, Long managerId);

    /**
     * 后台-验真报告详情
     * @param goodsDiligencingId
     * @return com.cy.dda.model.vo.goodsdiligencing.VerifyTruthReportAdminDetailVO
     */
    VerifyTruthReportAdminDetailVO getVerifyTruthReportAdminDetail(Long goodsDiligencingId);
}
